<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <script>
    
        //构造函数
        function Person(name) {
            this.name = name;
        }
        
        //人有一定的行为
        //将 一个包含方法的 对象 赋值给 构造函数的原型对象
        //使用自定义对象 赋值 给 原型对象 会覆盖掉原有原型对象的所有的属性和方法 所以 需要 在自定义对象中添加 constructor: Person,
        var o = {
            constructor:Person,
            eat:function() {
                console.log(this.name + '吃午饭');
            },
            walk:function() {
                console.log(this.name + '散步');               
            },
            sayhi:function () {
                console.log(this.name + ':你好啊！');                
            }
        }
        Person.prototype = o;

        //通过构造函数 实例化 一个 对象实例
        var p1 = new Person('jack');
        p1.eat();
        p1.walk()

        var p2 = new Person('andy');
        p2.eat();
        p2.walk()

        p2.sayhi();

        //验证 p1.eat 与 p2.eat 是使用的同一个函数
        console.log(p1.eat == p2.eat);//true
        
        
    </script>
</body>
</html>